In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame
(1) 0≦x≦1の範囲を等分した num 個の点ついて、「sin(2πx) + 正規分布の乱数(標準偏差0.3)」を計算した array を返す関数 create_dataset(num) を作成してください。
In [2]:
from numpy.random import normal
def create_dataset(num):
data_x = np.linspace(0,1,num)
data_y = np.sin(2*np.pi*data_x) + normal(loc=0, scale=0.3, size=num)
return data_y
In [3]:
create_dataset(10)
Out[3]:
(2) (1)の関数について、xの値と、対応する「y = sin(2πx) + 正規分布の乱数(平均0, 標準偏差0.3)」の値を列に持つDataFrameを返すように修正してください。(列の名前は、それぞれ 'x' および 'y' とします。)
例えば、次のような実装方法が考えられます。複数の方法を試してみてください。
In [4]:
def create_dataset1(num):
data_x = np.linspace(0,1,num)
data_y = np.sin(2*np.pi*data_x) + normal(loc=0, scale=0.3, size=num)
df = DataFrame()
df['x'] = data_x
df['y'] = data_y
return df
In [5]:
create_dataset1(10)
Out[5]:
In [6]:
def create_dataset2(num):
data_x = np.linspace(0,1,num)
data_y = np.sin(2*np.pi*data_x) + normal(loc=0, scale=0.3, size=num)
df = DataFrame({'x': data_x, 'y': data_y})
return df
In [7]:
create_dataset2(10)
Out[7]:
In [8]:
def create_dataset3(num):
data_x = np.linspace(0,1,num)
data_y = np.sin(2*np.pi*data_x) + normal(loc=0, scale=0.3, size=num)
col_x = Series(data_x, name='x')
col_y = Series(data_y, name='y')
df = pd.concat([col_x, col_y], axis=1)
return df
In [9]:
create_dataset3(10)
Out[9]:
(3) (2)の関数を用いて、num=1000 のデータフレームを作成した後、describe()メソッドでデータの統計情報を確認してください。
In [10]:
data = create_dataset1(1000)
data.describe()
Out[10]: